#include <head.h>

int main(int argc, char const *argv[])
{
    // 创建套接字
    int sock = socket( AF_INET ,  SOCK_STREAM , 0 );
    if(-1 == sock)
    {
        ERRLOG("创建套接字失败");
        exit(-1);
    }
    
    // 填写信息结构体
        // 使用的是 IPV4 网络信息结构体  不用使用通用信息结构体
    struct sockaddr_in server_addr;
        // 清空结构体
    memset(&server_addr , 0 , sizeof(server_addr));
        // 确定协议 选择 IPV4
    server_addr.sin_family = AF_INET;
        // 端口号
    server_addr.sin_port = htons(9999);  // 端口号可以随意指定
        // IP地址
    server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");


    // 绑定
    if(-1 == bind(sock , (struct sockaddr *)&server_addr , sizeof(server_addr)))
    {
        ERRLOG("绑定出错");
        close(sock);
        exit(-1);
    }

    printf("开始监听\n");
    // 监听
    if(-1 == listen(sock , 1))
    {
        ERRLOG("监听失败");
        close(sock);
        exit(-1);
    }
    // 等待连接
    int sock_client = accept(sock , NULL , NULL);
    printf("连接成功\n");

    // 收发
    // 发送一段信息
    // send(sock_client , "你好你好 我是服务器\n" , strlen("你好你好 我是服务器\n") , 0 );

    // 接收
    char buf[1024];
    memset(buf , 0 , sizeof(buf));
    recv( sock ,buf , sizeof(buf) , 0 );
    
    printf("接收到的信息 %s \n" , buf );

    // 关闭连接
    close(sock);
    close(sock_client);
    
    return 0;
}

// 聊天服务  多并发模型   线程 进程 多路IO
// 收 阻塞 线程
// 发 阻塞 线程
